
import pandas as pd
from datetime import datetime

#读取文件
dou1=pd.read_excel(r'G:\工作\每日\抖音1.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})
dou2=pd.read_excel(r'G:\工作\每日\抖音2.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})
dou3=pd.read_excel(r'G:\工作\每日\抖音3.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})
dou4=pd.read_excel(r'G:\工作\每日\抖音4.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})


#提取对应列
# 优化方案1：使用循环处理
dou_files = [
    (dou1, '抖音1'),
    (dou2, '抖音2'),
    (dou3, '抖音3'),
    (dou4, '抖音4')
]

dou_dates = []
columns = ['商品ID','选购商品','商家编码','商品数量','订单应付金额','订单状态','售后状态','流量来源',
           '达人昵称','广告渠道','流量类型','流量渠道','流量体裁','订单提交时间','平台实际承担优惠金额','达人实际承担优惠金额']

for df, platform in dou_files:
    dou_date = df.loc[:, columns]
    dou_date['平台'] = platform
    dou_dates.append(dou_date)

dou = pd.concat(dou_dates)

dou['订单应付金额加优惠']=dou['订单应付金额']+dou['平台实际承担优惠金额']+dou['达人实际承担优惠金额']
dou_date=dou.loc[:,['商品ID','选购商品','商家编码','商品数量','订单应付金额加优惠','订单状态','售后状态',
                    '订单应付金额加优惠','流量来源','达人昵称','广告渠道','流量类型','流量渠道','流量体裁','订单提交时间','平台']]
dou_date.columns=['商品ID','选购商品','商家编码','商品数量','订单应付金额','订单状态','售后状态',
                    '退款金额','流量来源','达人昵称','广告渠道','流量类型','流量渠道','流量体裁','订单提交时间','平台']

dou_date['订单提交时间']=pd.to_datetime(dou_date['订单提交时间'])
dou_date['日期']=dou_date['订单提交时间'].map(lambda x : datetime.date(x))
date_concat_s=dou_date[(dou_date['订单应付金额'] >= 0.01)]
date_concat_ss=date_concat_s[(date_concat_s['商家编码'] !='抖音直播间赠品')]


#['商家编码']去空格
date_concat_ss['商品ID']=date_concat_ss['商品ID'].str.strip()
date_concat_ss['商家编码']=date_concat_ss['商家编码'].str.strip()
date_concat_ss1=date_concat_ss.copy()


def  f(x,y,z,w,p): #x:选购商品 y:达人昵称 z:流量来源 w:广告渠道
    if y=='宛禾米线官方旗舰店' or ('z1' in x)  or ('Z1' in x) :
        return '自播间1.0'
    elif y=='宛禾米线速食官方旗舰店'  or y=='宛禾米线' or y=='宛禾速食官方旗舰店'  or y=='宛禾食品' or y=='宛禾速食直播间' or ('z3' in x)  or ('Z3' in x):
        return '自播间3.0'
    elif  ('wzm' in x) :
        return '窝子面直播间'
    elif y=='宛禾食品旗舰店' or ('z5' in x)  or ('Z5' in x):
        return '自播间5.0'
    elif y=='宛禾速食旗舰店' or y=='宛禾食品旗舰店甄选号'or ('z6' in x)  or ('Z6' in x):
        return '自播间6.0'
    elif y=='宛禾官方旗舰店' or ('z8' in x)  or ('Z8' in x):
        return '自播间8.0'
    elif y=='宛禾米线速食旗舰店' or ('lsf' in x)  :
        return '螺蛳土豆粉直播间'
    elif p=='抖音1' and ('dsp' in x) :
        return '自播间1.0'
    elif p=='抖音2' and ('dsp' in x) :
        return '自播间5.0'
    elif p=='抖音3' and ('dsp' in x) :
        return '自播间8.0'
    elif p=='抖音4' and ('dsp' in x) :
        return '螺蛳土豆粉直播间'
    elif pd.notnull(y):
        return '达人分发'
    elif z=='精选联盟':
        return '达人分发'
    elif w=='商品卡':
        return '超级商品卡'
    else:
        return '自然单'
date_concat_ss1['渠道']=list(map(f,
                                 list(date_concat_ss1['选购商品']),
                                 list(date_concat_ss1['达人昵称']),
                                 list(date_concat_ss1['流量来源']),
                                 list(date_concat_ss1['广告渠道']),
                                 list(date_concat_ss1['平台']))
)
#筛选发货成功单
date_concat_sss=date_concat_ss[
                (date_concat_ss['订单状态'] == '已发货')|
                (date_concat_ss['订单状态'] =='部分发货')|
                (date_concat_ss['订单状态'] =='待发货')|
                (date_concat_ss['订单状态'] =='已完成')|
                (date_concat_ss['订单状态'] =='已支付')
]
date_concat_sss=date_concat_sss[
    (date_concat_sss['售后状态'] != '退款成功')&
    (date_concat_sss['售后状态'] !='退款完成')&
    (date_concat_sss['售后状态'] !='已全额退款')&
    (date_concat_sss['售后状态'] !='(锁定)等待确认收货')&
    (date_concat_sss['售后状态'] !='(删除)等待出库')&
    (date_concat_sss['售后状态'] !='(删除)等待确认收货')&
    (date_concat_sss['售后状态'] !='售后完成')]

date_concat_td=date_concat_ss1[
    (date_concat_ss1['售后状态'] == '退款成功')|
    (date_concat_ss1['售后状态'] =='退款完成')|
    (date_concat_ss1['售后状态'] =='已全额退款')
]

#各渠道单量，销售额  抖音各渠道销售情况
date_concat_sss1=date_concat_ss1[
    (date_concat_ss1['订单状态'] == '已发货')|
    (date_concat_ss1['订单状态'] =='部分发货')|
    (date_concat_ss1['订单状态'] =='待发货')|
    (date_concat_ss1['订单状态'] =='已完成')|
    (date_concat_ss1['订单状态'] =='已支付')
]

date_concat_sss1=date_concat_sss1[
    (date_concat_sss1['售后状态'] != '退款成功')&
    (date_concat_sss1['售后状态'] !='退款完成')&
    (date_concat_sss1['售后状态'] !='已全额退款')&
    (date_concat_sss1['售后状态'] !='(锁定)等待确认收货')&
    (date_concat_sss1['售后状态'] !='(删除)等待出库')&
    (date_concat_sss1['售后状态'] !='(删除)等待确认收货')&
    (date_concat_sss1['售后状态'] !='售后完成')
]

res_z=date_concat_sss1.groupby([date_concat_sss1['日期'],
                                date_concat_sss1['平台'],
                                date_concat_sss1['渠道']],as_index=False
                               ).agg(销售额=('订单应付金额','sum'),
                                     单量=('商品数量','count')
                                     )
re_td_sale=(date_concat_td['退款金额']
            .groupby(
                [
                date_concat_td['日期'],
                 date_concat_td['平台'],
                 date_concat_td['渠道']
                ]
            )
            .sum())
re=pd.merge(res_z,re_td_sale,on=['日期','平台','渠道'],how='left')
re.fillna(0,inplace=True)
re['总销售额']=re['销售额']+re['退款金额']
re.to_excel(r'G:\结果\抖音各渠道销售情况.xlsx')
